时间最优功能介绍
| 修订日期 | 修订版本 | 修订内容 | 修订人 | 
|---|---|---|---|
| 2025.05.12 | V0.1 | 初始化文档 | 邓誉鑫 | 
[TOC]
1. 时间最优功能简介
在机器人轨迹规划中,时间最优功能通过同步考虑运动学约束(速度/加速度)和动力学约束(关节力矩),实现运动时间的最小化。该功能特别适用于对节拍要求严苛的场景(如高速码垛、流水线分拣),可使机械臂在安全范围内以物理极限性能执行运动。
2. 用法介绍
struct MoveProperty
{
    bool                    time_optimal{false};                         // 时间最优标志,开启后会使参考轨迹同时满足运动学和动力学约束
    std::vector<double>     maxV;                                        // 最大运动速度
    std::vector<double>     maxA;                                        // 最大运动加速度
使用时间最优功能需要显式设置运动属性中的 time_optimal = true ,时间最优功能开启后,能够满足速度,加速度以及力矩限制之中的任意一种约束,比如设置加速度和力矩很大,速度很小,则受限于速度约束;设置速度和力矩很大,加速度很小,则受限于加速度约束,会满足三者中任意一个的最大值来执行动作
自动适配加速度:当用户将maxV和maxA设置得很大,系统会受限于电机的最大扭矩,从而自动调整加速度和速度,以达到时间最优。
| 参数类型 | 设置策略 | 示例值(6轴机器人) | 
|---|---|---|
| maxV | 设置值 >= 理论最大极限值(当期望系统自动适配时) | [6.0, 6.0, 6.0, 6.0, 6.0, 6.0] | 
| maxA | 设置值 >= 理论最大极限值(当期望系统自动适配时) | [50.0, 50.0, 50.0, 50.0, 50.0, 50.0] | 
3.使用示例
Setup("aubo_i5");                
std::vector<interface::RLJntArray> joints = { {0.406,-0.148,1.957,0.535,1.570,0.313},                                                  {0.695,-0.258,1.094,0.244,1.567,-0.223} };
initiatePlanner(robot, joints[0], t_w);
interface::PathProperty path_property;
interface::MoveProperty mAttr;
path_property.describe_space = interface::DescribeSpace::JOINT;
path_property.cur_prop.type  = interface::CurveType::LINE;
interface::PathPoint point   = generatePathPoint(interface::DescribeSpace::JOINT, 1, joints[1], {}, t_w);
mAttr.time_optimal   = true;                                    // 开启时间最优标志
mAttr.maxV             = {10.0, 10.0, 10.0, 10.0, 10.0, 10.0};   // 设置较大的关节速度限制
mAttr.maxA             = {50.0, 50.0, 50.0, 50.0, 50.0, 50.0};   // 设置较大的关节加速度限制
robot->tpAddPositionLine(point, path_property, mAttr);         // 添加moveJoint
注意事项
- 时间最优功能适用于确定路径的场景,如码垛,分拣等,开启时间最优功能会默认关闭动态交融,摆动以及moveP等功能